昨天有兩個戰友不幸挑戰失敗,在此為他們默哀3秒,3,2,1。
在寫上一篇文章時,
剛好翻到TI 的SDK資料夾中有I2C 的驅動程式,
一般在晶片之間常用的通訊協定有I2C、UART、SPI,
我們這篇就來介紹一下晶片之間的通訊方式吧。
全名 Inter-Integrated Circuit,縮寫成IIC或是I2C或是I2C,
讀作"I-square-C"或是"I-two-C"或是"I方C"。
是一種串流通訊匯流排,裝置分為主機和從機,(如下圖,取自成大資工wiki)
一串I2C的通訊串流排中只能有一個主機,
每個從機都有一個位址,通常稱作I2C Address,
主機就是透過位址來點名,來確認現在要對哪個從機發送或讀取資料,
所以串流排上不能接具有相同位址的從機。
常見的I2C傳輸速率有100Kbit/s、400Kbit/s,
按照TI 官方論壇的回應,CC2642R理論上可支持更高速的傳輸速率,不過他們僅針對100Kbit/s和400Kbits進行驗證。
以硬體的角度來看,
兩個裝置之間需要用兩條線來當作通訊的橋梁,
這兩條橋的名字分別是(如下圖,取自成大資工wiki)
下面這張是某裝置透過I2C與DAC晶片(TC1321)進行通訊的實況(取自microchip論壇),
可以看到有兩個通道,上面是SDA,下面震盪比較規律的是SCL,
按照I2C的通訊規範可以得到下列結果:
看了一堆似懂非懂的東西,
不過沒關係我們只要會使用bsp_i2c的函式就好,
今天我的能量消耗殆盡,我們明日再來。
參考文章: